package edu.uoc.vmerinom.tfc.backup;

import java.text.SimpleDateFormat;
import java.util.List;

import javax.persistence.EntityManager;

import edu.uoc.vmerinom.tfc.domain.Perfil;

public class Perfiles {
	@SuppressWarnings("unchecked")
	public static String backup(EntityManager entityManager) {
		StringBuffer backup = new StringBuffer();
		List<Perfil> perfiles = entityManager.createQuery("from Perfil order by id").getResultList();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		for (Perfil perfil : perfiles) {
			StringBuffer insert = new StringBuffer();
			insert.append("insert into perfiles (id, creado, modificado, alta, baja, nombre, ");
			insert.append("administrador, usuarios_crear, usuarios_eliminar, usuarios_modificar, ");
			insert.append("usuarios_modificar_acceso, perfiles_crear, perfiles_eliminar, perfiles_modificar, ");
			insert.append("perfiles_asignar, componentes_crear, componentes_eliminar, componentes_modificar, ");
			insert.append("grupos_crear, grupos_eliminar, grupos_modificar, reuniones_crear, ");
			insert.append("reuniones_eliminar, reuniones_modificar, horas_crear, horas_eliminar, ");
			insert.append("horas_modificar, solicitudes_ver, solicitudes_correo, solicitudes_eliminar, ");
			insert.append("solicitudes_modificar) values (");
			insert.append(perfil.getId());
			insert.append(", current_timestamp, current_timestamp, '");
			insert.append(sdf.format(perfil.getAlta()));
			insert.append("', ");
			if (perfil.getBaja() != null) {
				insert.append("'");
				insert.append(sdf.format(perfil.getBaja()));
				insert.append(", '");
			} else {
				insert.append("null, '");
			}
			insert.append(perfil.getNombre());
			insert.append("', ");
			insert.append(perfil.isAdministrador());
			insert.append(", ");
			insert.append(perfil.isUsuariosCrear());
			insert.append(", ");
			insert.append(perfil.isUsuariosEliminar());
			insert.append(", ");
			insert.append(perfil.isUsuariosModificar());
			insert.append(", ");
			insert.append(perfil.isUsuariosModificarAcceso());
			insert.append(", ");
			insert.append(perfil.isPerfilesCrear());
			insert.append(", ");
			insert.append(perfil.isPerfilesEliminar());
			insert.append(", ");
			insert.append(perfil.isPerfilesModificar());
			insert.append(", ");
			insert.append(perfil.isPerfilesAsignar());
			insert.append(", ");
			insert.append(perfil.isComponentesCrear());
			insert.append(", ");
			insert.append(perfil.isComponentesEliminar());
			insert.append(", ");
			insert.append(perfil.isComponentesModificar());
			insert.append(", ");
			insert.append(perfil.isGruposCrear());
			insert.append(", ");
			insert.append(perfil.isGruposEliminar());
			insert.append(", ");
			insert.append(perfil.isGruposModificar());
			insert.append(", ");
			insert.append(perfil.isReunionesCrear());
			insert.append(", ");
			insert.append(perfil.isReunionesEliminar());
			insert.append(", ");
			insert.append(perfil.isReunionesModificar());
			insert.append(", ");
			insert.append(perfil.isHorasCrear());
			insert.append(", ");
			insert.append(perfil.isHorasEliminar());
			insert.append(", ");
			insert.append(perfil.isHorasModificar());
			insert.append(", ");
			insert.append(perfil.isSolicitudesVer());
			insert.append(", ");
			insert.append(perfil.isSolicitudesCorreo());
			insert.append(", ");
			insert.append(perfil.isSolicitudesEliminar());
			insert.append(", ");
			insert.append(perfil.isSolicitudesModificar());
			insert.append(");\n");
			backup.append(insert);
		}
		return backup.toString();
	}
}
